计算机系统基础(二)

计算机系统基础(二)

数据的表示和存储

  1. 八进制后缀O 十六进制后缀H 或者前缀Ox
  2. 十进制到二进制转换 通过记住1、24、8、16、32、64、128、256、512、1024、
    2048、4096、8192、16382、32768、65536
  3. 在计算机内部,一个浮点数可以用数的符号、一个定点小数和一个定点整数来表示。
    TIM截图20171015213123.png
  4. 原码(Sign and Magnitude)浮点数尾数用原码定点小数表示
    TIM截图20171015222558.png
  5. 移码表示 将每一个数值加上一个偏置常数。便于浮点数加减运算时的对阶操作(比较大小)。通常,当编码位数为n时,bias取2n-1或2n-1-1。当bias取2n-1时,移码和补码仅第一位不同,移码用来表示浮点数的阶。
  6. 补码 (模运算)来表示带符号整数。在一个模运算系统中,一个数与它除以模后的余数等价。一个负数的补码等于将对应正数补码各位取反,末位加一。 一个负数的补码等于模减该负数的绝对值。负数的补码等于对应正数补码各位取反,末位加一。
  7. 最低有效位 LSB 最高有效位 MSB
  8. 存储器的编址方式:大端方式和小端方式

    运算电路

    C语言中的运算
  9. 算术运算
  10. 按位运算 对位串实现掩码操作或相应的其他处理(主要用于对多媒体数据或状态/控制信息进行处理)。
  11. 移位运算 提取部分信息,扩大或缩小2、4、8…倍。

TIM截图20171016130207.png

  1. 逻辑运算 用于关系表达式的运算
  2. 位扩展和位截断 类型转换
整数加减运算

TIM截图20171016130750.png

  • 计算机中所有运算都基于加法器实现
  • 加法器不知道所运算的的是带符号数还是无符号数
  • 加法器不判定对错,总是取低n位作为结果,并生成标志信息。
    TIM截图20171016131101.png
    溢出公式

  • 无符号减公式

  • 无符号减公式.png
  • 带符号减公式
  • 带符号减公式.png
  • 无符号加公式
  • 无符号加公式.png
  • 带符号加公式
  • 带符号加公式.png

乘除运算及浮点数运算

  1. 整数的乘法运算

整数乘法溢出漏洞

TIM截图20171016132823.png

编译器在处理变量和常数相乘时,往往以移位、加位和减法的组合运算来代替乘法运算。

  1. 整数除法运算

编译器在处理一个变量与一个2的幂次形式的整数相除时,常采用右移运算来实现。

变量与常数之间的除运算

TIM截图20171016133422.png

  1. 浮点数运算

TIM截图20171016133630.png

上述过程可能出现的情况

TIM截图20171016133652.png

IEEE 754 标准规定的五种异常

  1. 无效运算(无意义)

1.png

  1. 除以0(即无穷大)
  2. 数太大(阶上溢)
  3. 数太小(阶下溢)
  4. 结果不精确(舍入)